#pragma once

class OverQueue{
public:
	explicit OverQueue(int msize = 10);
	~OverQueue() {delete [] _queue;}

	int size(void) const 
	{
		return _size;
	}
    bool empty(void) const
	{
		return _size ? false : true;
	}
    bool full(void) const
	{
		return (_size < maxsize) ? false : true;
	}

	bool enqueue(int *data);
	int *get_head(void);
	int *get_tail(void);
	int *get_by_index(unsigned int index);

	void remove_head(void);
	void remove_tail(void);

private:
	int *_queue;
	int _front;
	int _size;
	const int maxsize;
};
